iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
AI/ ML & Data

粗暴的資料處理 DuckDB系列 第 22

Day22 -- DuckDB Style SQL (16) ?

  • 分享至 

  • xImage
  •  

前面介紹了幾天,用 DuckDB 可以輕易辦到,但是在 Postgres 確很難辦的到事情,在 Postgres 中往往需要另外寫 PL/pgSQL 來擴充 Postgres 的功能。 那在 DuckDB 有沒有類似的 Stored Procedure 呢?

恭喜問了就有

Stored Procedure 在 DuckDB 中用 Macro 稱呼,思思有兩種 Macro 也有兩種。

  1. Scalar Macro
  2. Table macro

今天我們就先介紹 Scalar Macro

CREATE MACRO T1(lol) AS 
lol || 'T1 Fighting!';

SELECT T1(' 2024 World ');

我們定義了一個 macro T1 ,然後可以在 SQL 中輕鬆的使用,你可能會想,這跟 Postgres 有什麼區別?
我覺得最重要的區別就是簡單, DuckDB 的 Macro 更像是同一種 SQL 寫 function 而非 PL/pgSQL 用了很多額外的關鍵字。

那 DuckDB 怎麼讓 Macro 有足夠的表達力 ?

CTE in DuckDB macro

CREATE MACRO plus_one(a) AS 
(WITH cte AS (SELECT 1 AS a) SELECT cte.a + a FROM cte);

DuckDB macro with default constant parameters

CREATE MACRO add_default(a, b := 5) AS a + b;

注意那個 :=

DuckDB macro with case when

CREATE MACRO ifelse(a, b, c) AS 
CASE WHEN a THEN b ELSE c END;

明天再介紹 Table macro 拉 !


上一篇
Day21 -- DuckDB Style SQL (15) ?
下一篇
Day23-- DuckDB Style SQL (17) ?
系列文
粗暴的資料處理 DuckDB30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言